package mysql8学习.高级.第06章_索引的数据结构;

/**
 * MyISAM 只有二级索引(非聚簇索引（不保存真实信息）)
 *
 * 即使多个存储引擎支持同一种类型的索引，但是他们的实现原理也是不同的。
 * Innodb和MyISAM默认的索引是 Btree 索引; 而Memory默认的索引是Hash索引。
 *
 * MyISAM引擎使用B+Tree作为索引结构,叶子节点的data域存放的是数据记录的地址。
 *
 * 我们知道InnoDB中索引印数据,也就是聚簇索引的那棵B+树的叶子节点中已经把所有完整的用户记录都包含了，
 * 而MyISAM的索引方案虽然也使用树形结构,但是却将索引和数据分开存储:
 *      ● 将表中的记录按照记录的插入顺序单独存储在一个文件中， 称之为数据文件。
 *        这个文件并不划分为若千个数据页，有多少记录就往这个文件中塞多少记录就成了。
 *        由于在插入数据的时候并没有刻意按照主键大小排序，所以我们并不能在这些数据上使用二分法进行查找。
 *      ● 使用MyISAM存储引擎的表会把索引信息另外存储到一个称为索引文件的另一个文件中。
 *        MyISAM 会单独为表的主键创建一个索引，只不过在索引的叶子节点中存储的不是完整的用户记录，
 *        而是 主键值+数据记录地址 的组合。
 *
 * MyISAM 同样也是一棵 B+Tree， data域保存数据记录的地址。
 * 因此，MyISAM中索引检索的算法为:
 *      首先按照B+Tree搜索算法搜索索引，如果指定的Key存在，则取出其data域的值，
 *      然后以data域的值为地址，读取相应数据记录。
 *
 */
public class G_MyISAM引擎 {
}
